{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.externals import joblib\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "# Importing the model\n",
    "from sklearn.ensemble import AdaBoostClassifier\n",
    "import _pickle as pickle\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import precision_score, recall_score, accuracy_score, f1_score, confusion_matrix, classification_report\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load in the Pretrained Model\n",
    "- Use AdaBoost Model as an example"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf = joblib.load(\"save_models/adaboost_model_corr.m\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load in the data for prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_excel('top10_features.xlsx')\n",
    "df = df.drop(df.columns[0], axis = 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Preprocess data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "scaler = StandardScaler()\n",
    "\n",
    "features_df = df.drop([\"Decision\"], 1)\n",
    "\n",
    "scaled_df = pd.DataFrame(scaler.fit_transform(features_df), \n",
    "                               index=features_df.index, \n",
    "                               columns=features_df.columns)\n",
    "\n",
    "df = scaled_df.join(df.Decision)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### All data are used for prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_test = df.drop([\"Decision\"], 1)\n",
    "y_test = df.Decision"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Do prediction using the model we extract from .m file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "        Sell       0.48      0.59      0.53        27\n",
      "         Buy       0.56      0.52      0.54        29\n",
      "        Hold       0.67      0.40      0.50        10\n",
      "\n",
      "    accuracy                           0.53        66\n",
      "   macro avg       0.57      0.50      0.52        66\n",
      "weighted avg       0.54      0.53      0.53        66\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Classifier predictions\n",
    "pred = clf.predict(X_test)\n",
    "\n",
    "#Printing out results\n",
    "report = classification_report(y_test, pred, target_names=['Sell', 'Buy', 'Hold'])\n",
    "print(report)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_confusion_matrix(y_true, y_pred, labels=[\"Sell\", \"Buy\", \"Hold\"], \n",
    "                          normalize=False, title=None, cmap=plt.cm.coolwarm):\n",
    "\n",
    "    cm = confusion_matrix(y_true, y_pred)\n",
    "    fig, ax = plt.subplots(figsize=(12,6))\n",
    "    im = ax.imshow(cm, interpolation='nearest', cmap=cmap)\n",
    "    ax.figure.colorbar(im, ax=ax)\n",
    "    # We want to show all ticks...\n",
    "    ax.set(xticks=np.arange(cm.shape[1]),\n",
    "           yticks=np.arange(cm.shape[0]),\n",
    "           # ... and label them with the respective list entries\n",
    "           xticklabels=labels, yticklabels=labels,\n",
    "           title=title,\n",
    "           ylabel='ACTUAL',\n",
    "           xlabel='PREDICTED')\n",
    "    # Rotate the tick labels and set their alignment.\n",
    "    plt.setp(ax.get_xticklabels(), rotation=45, ha=\"right\",\n",
    "             rotation_mode=\"anchor\")\n",
    "    # Loop over data dimensions and create text annotations.\n",
    "    fmt = '.2f' if normalize else 'd'\n",
    "    thresh = cm.max() / 1.5\n",
    "    for i in range(cm.shape[0]):\n",
    "        for j in range(cm.shape[1]):\n",
    "            ax.text(j, i, format(cm[i, j], fmt),\n",
    "                    ha=\"center\", va=\"center\",\n",
    "                    color=\"snow\" if cm[i, j] > thresh else \"orange\",\n",
    "                    size=26)\n",
    "    ax.grid(False)\n",
    "    fig.tight_layout()\n",
    "    return ax"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_confusion_matrix(y_test, pred, title=\"Confusion Matrix\")\n",
    "np.set_printoptions(precision=1)\n",
    "# Plot non-normalized confusion matrix\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
